package com.qf.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.UUID;

/**
 * 演示Collection接口中方法的作用
 */
public class Demo01 {
    public static void main(String[] args) {
        Collection c = new ArrayList();  // 创建一个ArrayList子类型的对象，赋值给Collecion接口类型的变量
        int size = c.size();
        System.out.println(c); // 看看 有没有覆盖 toString方法呢
        System.out.println(size);
        c.add(1);
        c.add("hello");
        System.out.println(c.size());
        System.out.println(c);

        Cat cat01 = new Cat("加菲猫", 3);
        c.add(cat01);
        System.out.println(c.size());
        System.out.println(c);

        // addAll
        Collection c2 = new ArrayList();
        c2.add("hi");
        c2.add(200);
        System.out.println(c2);

        c.addAll(c2);
        System.out.println(c.size());
        System.out.println(c);

        // clear
//        c.clear();
//        System.out.println(c);

        // contains
//        System.out.println(c.contains("hello"));
//        System.out.println(c.contains("world"));
        System.out.println(c.containsAll(c2));
        c2.add(100);
        System.out.println(c);
//        System.out.println(c2);
//        System.out.println(c.containsAll(c2));

//        System.out.println(c.equals(c2));
//        System.out.println(c2.equals(c2));

        // 迭代器 , 作用，可以遍历集合中的所有元素
//        Iterator iterator = c.iterator();
//        while (iterator.hasNext()){
//            Object next = iterator.next();
//            System.out.println(next);
//        }
        // java对于迭代器接口给出的 语法糖，底层依然使用了 iterator()方法
//        for (Object o : c) {
//            System.out.println(o);
//        }

        // remove
//        c.remove("hi");
//        c.removeAll(c2);
//        System.out.println(c);
        // 把类型为Cat的对象删除掉
//        c.removeIf( e -> e instanceof Cat );
//        System.out.println(c);

        // 求集合的交集
//        c.retainAll(c2);
//        System.out.println(c);

        // 集合转换为数组
//        Object[] array = c.toArray();
//        System.out.println(array.length);
//        for (int i = 0; i < array.length; i++) {
//            System.out.println(array[i]);
//        }

//        Object[] objects = new Object[c.size()];
//        c.toArray(objects);
//        for (int i = 0; i < objects.length; i++) {
//            System.out.println(objects[i]);
//        }
        c.clear();
        System.out.println(c.isEmpty());


    }
}
